gdk: Deprecate gdk_cairo_create()
authorEmmanuele Bassi <ebassi@gnome.org>
Tue, 7 Jun 2016 16:06:47 +0000 (17:06 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Thu, 9 Jun 2016 16:45:40 +0000 (17:45 +0100)
We have GdkDrawingContext, now, which is in charge of creating Cairo
contexts for drawing on a GdkWindow.

https://bugzilla.gnome.org/show_bug.cgi?id=766675

gdk/gdkcairo.h
gdk/gdkwindow.c
tests/print-editor.c
tests/testinput.c

index 6cd50aacac7d2d344435b1316e6d60cf4d0df53d..59f1f2621969615d13e3764b90cf37cd2dda3655 100644 (file)
@@ -31,7 +31,7 @@
 
 G_BEGIN_DECLS
 
-GDK_AVAILABLE_IN_ALL
+GDK_DEPRECATED_IN_3_22_FOR(gdk_window_begin_draw_frame() and gdk_drawing_context_get_cairo_context())
 cairo_t  * gdk_cairo_create             (GdkWindow          *window);
 
 GDK_AVAILABLE_IN_ALL
index f5503e8668edd83b135901cc10e939aeb375ea61..01f7838a5025c59dba9ae6ac9a7b8156f0093d2d 100644 (file)
@@ -3524,10 +3524,21 @@ _gdk_window_ref_cairo_surface (GdkWindow *window)
  * Note that calling cairo_reset_clip() on the resulting #cairo_t will
  * produce undefined results, so avoid it at all costs.
  *
+ * Typically, this function is used to draw on a #GdkWindow out of the paint
+ * cycle of the toolkit; this should be avoided, as it breaks various assumptions
+ * and optimizations.
+ *
+ * If you are drawing on a native #GdkWindow in response to a %GDK_EXPOSE event
+ * you should use gdk_window_begin_draw_frame() and gdk_drawing_context_get_cairo_context()
+ * instead. GTK will automatically do this for you when drawing a widget.
+ *
  * Returns: A newly created Cairo context. Free with
  *  cairo_destroy() when you are done drawing.
  * 
  * Since: 2.8
+ *
+ * Deprecated: 3.22: Use gdk_window_begin_draw_frame() and
+ *   gdk_drawing_context_get_cairo_context() instead
  **/
 cairo_t *
 gdk_cairo_create (GdkWindow *window)
index a0ea80ce1fe4c5642184b511368815522d4549ca..fe67e51c87408d32f2c25b32a87d5ac2f9e47640 100644 (file)
@@ -423,7 +423,9 @@ preview_got_page_size (GtkPrintOperationPreview *preview,
   w = gtk_paper_size_get_width (paper_size, GTK_UNIT_INCH);
   h = gtk_paper_size_get_height (paper_size, GTK_UNIT_INCH);
 
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
   cr = gdk_cairo_create (gtk_widget_get_window (pop->area));
+G_GNUC_END_IGNORE_DEPRECATIONS
 
   gtk_widget_get_allocation (pop->area, &allocation);
   dpi_x = allocation.width/w;
@@ -500,7 +502,10 @@ preview_cb (GtkPrintOperation        *op,
 
   gtk_widget_realize (da);
 
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
   cr = gdk_cairo_create (gtk_widget_get_window (da));
+G_GNUC_END_IGNORE_DEPRECATIONS
+
   /* TODO: What dpi to use here? This will be used for pagination.. */
   gtk_print_context_set_cairo_context (context, cr, 72, 72);
   cairo_destroy (cr);
index f6b607f775cc6451960e86e7c438c97b3db9df48..57a9e4f41f8bd4fb7421e8f6b98c95914eb6f591 100644 (file)
@@ -52,7 +52,9 @@ update_cursor (GtkWidget *widget,  gdouble x, gdouble y)
 
   if (surface != NULL)
     {
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
       cairo_t *cr = gdk_cairo_create (gtk_widget_get_window (widget));
+G_GNUC_END_IGNORE_DEPRECATIONS
 
       if (cursor_present && (cursor_present != state ||
                             x != cursor_x || y != cursor_y))